package com.gray.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.gray.common.Page;
import com.gray.dto.ArticleDto;
import com.gray.pojo.Article;
import com.gray.pojo.User;

public interface ArticleMapper {
    int deleteByPrimaryKey(Short articleId);

    int insert(Article record);

    int insertSelective(Article record);
    
    

    /**
     * 根据文章id查询文章信息
     * @param articleId
     * @return
     */
    Article selectByPrimaryKey(Short articleId);
    
    int updateByPrimaryKeySelective(Article record);

    int updateByPrimaryKeyWithBLOBs(Article record);

    int updateByPrimaryKey(Article record);
    
    int deleteByUserAndPrimaryKey(Short articleId, Integer UserId);
    
    
    /**
     * 
     * @return 返回该用户的所有文章的数目
     */
    int selectTotalNum(@Param(value="userId")Integer userId);
    
    /**
     * 按照用户进行分页查询
     * @param user
     * @param origin 起始位置
     * @param totalNum 查询总数 -----一页可拥有多少条记录
     * @return
     */
    List<Article> selectByPageAndUser(@Param("userId")Integer userId,
    		@Param("origin")Integer origin,
    		@Param("totalNum")Integer totalNum);
    
    /**
     * 根据文章名 进行模糊查询(分页)
     * @param article_name
     * @return
     */
    List<Article> selectByArticleNameLike(@Param(value="articleName")String articleName,@Param("origin")Integer origin,
    		@Param("totalNum")Integer totalNum);
    
   /**
    * 分页进行查询 获取点击量最高的文章
    * @param origin 起始位置
    * @param totalNum 查询总数 -----一页可拥有多少条记录
    * @return
    */
    List<Article> selectArticleByArticleClick(@Param("origin")Integer origin,
    		@Param("totalNum")Integer totalNum);
    
    
    /**
     * 文章管理页面 返回的
     * @param userId
     * @param origin
     * @param totalNum
     * @return
     */
    List<ArticleDto> selectArticleDtoByUserAndPage(
    		@Param("userId")Integer userId,
    		@Param("origin")Integer origin,
    		@Param("totalNum")Integer totalNum);
    
    
    
    /**
     * 获取所有的文章的数量
     * @return
     */
    int selectAllArticleNum();
    
    ArticleDto selectArticleDtoByUserAndArticleId(@Param("userId")Integer userId,
    		@Param("articleId")short articleId);
    
    /**
     * 获取该板块的文章
     * @param sectionId 板块id
     * @param origin	
     * @param totalNum
     * @return
     */
    List<ArticleDto> selectArticleDtoBySection(
    		@Param("sectionId")byte sectionId,
    		@Param("origin")Integer origin,
    		@Param("totalNum")Integer totalNum);
    int selectArticleNumBySectionId(@Param("sectionId") byte sectionId);
    
    /**
     * 获取是否推荐  首页轮播图显示
     * @return
     */
    List selcectCarousel();
    
}